//基于Axios实例封装的管理员相关API请求模块，主要用于与后端进行管理员数据的分页查询交互
//从当前目录（.）的index.js文件中导入之前创建的Axios实例service
import service from "."; //由于index.js中export导出service，故导入如左

//封装所有与管理员相关的API请求方法
const adminApi = {
    //执行管理员数据的分页查询
    search(params) {
        //调用Axios实例的get方法发送GET请求
        return service.get(
            '/admin', //请求地址，结合baseURL，完整地址为http://127.0.0.1:9001/admin
            {params} //请求参数，会被Axios自动拼接到URL的查询字符串中（如?pageNum=1&pageSize=10）
        ).then(response=>response.data) //Promise的then方法处理请求成功的响应，只返回响应体的data层（axios的响应结构包含config、data、status等，response.data是后端接口返回的实际数据，例如{code: 200, data: {list: [], total: 3}}）
    },
    //前端封装的用于向后端发送"添加管理员"请求的API接口函数，处理管理员信息的创建操作
    add(admin) {
        //调用Axios实例的post方法，发送POST(创建资源)类型的HTTP请求
        return service.post(
            '/admin',//相对路径
            admin//请求体，即发送给后端的数据，Axios自动将该对象序列化为JSON格式，后端可通过解析该JSON数据获取管理员信息
        ).then(response=>response.data)//service.post(...)会返回一个Promise对象
    },
    //用于向后端发送管理员信息更新请求的函数
    edit(admin){
        return service.put(//HTTP的PUT方法，更新已有资源
            '/admin',//请求的后端接口路径
             admin //要发送给后端的请求体数据，包含更新后的管理员信息
        ).then(response=>response.data)//Promise 的链式调用，用于处理请求成功后的响应：response是后端返回的完整响应对象；response.data提取响应体中的数据
    },
    // 登录验证
    login(admin) {
        return service.post(
            '/admin/login',
            admin     // 请求参数
        ).then(response=>response.data)
    },
    // 获取登录信息
    getLoginAdmin() {
        return service.get(
            '/admin/getLogin'
        ).then(response=>response.data)
    }
}
//导出adminApi对象，供其他组件导入使用
export default adminApi